package jp.co.jolystar.product.activity;

import java.util.ArrayList;

import jp.co.jolystar.product.R;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class TargetHistoryActivity extends Activity implements OnItemClickListener {
	// resから取り出すためのResources
	Resources res;
    // データの共有と保存
    public SharedPreferences sharedPreferences;
    // ログ出力用タグ
    String tag = "TargetHistoryActivity";
    // 履歴保存件数
    int HIST_NUM = 10;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.target_history);
        res = getResources();

        // SharedPreferencesオブジェクトの取得
        sharedPreferences = getSharedPreferences("TargetCompass",
                Context.MODE_PRIVATE);

        // アダプタを用意して地名履歴の配列を紐付ける
        ArrayAdapter<String> histAdapter = new ArrayAdapter<String>(this,
        	    android.R.layout.simple_list_item_1, getHistory());

        // アクティビティのListViewにhistAdapterにセットする
        ListView histList = (ListView)findViewById(R.id.hist_list);
        histList.setAdapter(histAdapter);
        histList.setOnItemClickListener(this);
    }

    /**
     * リストビューの選択された場所をSharedPreferencesの先頭に入れ替えて設定画面に戻る
     */
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    	if (position > 1) {
        	SharedPreferences.Editor editor = sharedPreferences.edit();
        	// 選択された行数を元に地名を古い方へ１つ移す
    	    for (int i = (position - 1); i > 0; i--) {
    		    editor.putString("searchWordHistory" + i,
    		    		sharedPreferences.getString("searchWordHistory" + (i - 1), ""));
    	    }
        	// 選択された地名を最新にする
    	    editor.putString("searchWordHistory0",
    	    		sharedPreferences.getString("searchWordHistory" + (position - 1), ""));
    	    // 変更をコミット
    	    editor.commit();
    	}
    	// 元のアクティビティへ戻る
    	finish();
    }

    /**
     * 入力履歴を取得する
     */
    private ArrayList<String> getHistory() {
    	String pn = new String();
        ArrayList<String> wordList = new ArrayList<String>();

        // 一つ目の要素は戻るボタンとする
        wordList.add(res.getString(R.string.back));
        // 二つ目以降は履歴の地名
        for (int i = 0; i < HIST_NUM; i++) {
            pn = sharedPreferences.getString("searchWordHistory" + i,"");
            // 要素の数が画面の高さに満たないとエラーで落ちるかもしれない
            if ("".equals(pn)) {
            	break;
            }
        	wordList.add(pn);
        }
        return wordList;
    }

    /**
     * アクティビティがユーザとやり取りを開始する直前に実行
     */
    @Override
    public void onResume() {
        super.onResume();
    }

    /**
     * アクティビティがバックグラウンドに隠れる直前に実行
     */
    @Override
    public void onPause() {
        super.onPause();
    }

}